﻿<?xml version="1.0" encoding="UTF-8"?>
<!--RSS generated by Windows SharePoint Services V3 RSS Generator on 7/31/2010 11:09:27 AM-->
<?xml-stylesheet type="text/xsl" href="/Blogs/dupont_thomas/_layouts/RssXslt.aspx?List=6a34393b-044c-47dc-94df-9b9c30ec037a" version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Thomas DuPont: Posts</title>
    <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/AllPosts.aspx</link>
    <description>RSS feed for the Posts list.</description>
    <lastBuildDate>Sat, 31 Jul 2010 16:09:27 GMT</lastBuildDate>
    <generator>Windows SharePoint Services V3 RSS Generator</generator>
    <ttl>60</ttl>
    <image>
      <title>Thomas DuPont: Posts</title>
      <url>/Blogs/dupont_thomas/_layouts/images/homepage.gif</url>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/AllPosts.aspx</link>
    </image>
    <item>
      <title>Send To Connections in SharePoint 2010</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=32</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass1DFA8C476DF24046A630D02CD0060EBC><p>Send To Connections in SharePoint 2010 offer much more flexibility and a great way to better managed documents. A user can move a document from one location to another, create a copy of a document and send it to another location, or move a document but leave a link of its new location in former location. Documents can be sent across site, site collection or even farms using the OfficialFile web service defined here:
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne1.png" alt="">
	</p><p>In SharePoint 2007, you have to create a Record Center site in order to use the Record management functionality. Now, in SharePoint 2010, the record management functionality has been wrapped into a feature called 'Content Organizer' which provides a lot of flexibility. For example, if you want your site to be a document recipient, it is now possible by just enabling a site feature (versus creating a dedicated Record management site like we do in SharePoint 2007). 
</p><p><strong>Creating a Send to Connection
</strong></p><p>Before you create a new Send to Connection, make sure the site you are planning to use as a target site has the content organizer feature enabled
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne2.png" alt="">
	</p><p>If you don't enable that feature, you won't be able to create the send to connection.
</p><p>Go to Central Administration in General Application Settings. Under the External Service Connections section, locate and click on 'Configure sent to connections':
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne3.png" alt="">
	</p><p>New features are available in the connector in the SharePoint 2010. In addition to just move and document, you can now choose to copy document but also move a document and leave a Link in the current document library location that points to the new location of the document as show here:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne4.png" alt="">
	</p><p>Once your Send To Connection is created and you choose to set it manual use in document libraries, it should show as shown here in the item context menu in the 'Send To' category: 
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne5.png" alt="">
	</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne6.png" alt="">
	</p><p>
 </p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne7.png" alt="">
	</p><p>
 </p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne8.png" alt="">
	</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032910_1617_SendToConne9.png" alt=""></p></div></div>
<div><b>Published:</b> 3/29/2010 10:17 AM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Mon, 29 Mar 2010 16:17:46 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=32</guid>
    </item>
    <item>
      <title>FAST Query Language</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=37</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass74BD3F66E6EA446FA9F8CD37B24CAC36><p>FQL stands for 'FAST Query Language' and it used to build very flexible and powerful queries of the index. Here is a simple FQL example in which the word 'Examen' is searched within the document field named 'passage':
</p><p style="margin-left:36pt"><span style="color:#c0504d">passage:string(&quot;Examen&quot;)
</span></p><p><strong>AND/OR</strong>: in these examples, the 'and' / 'or' operators indicate that they are applied to the query terms 'Red' and 'Car':
</p><p style="margin-left:36pt"><span style="color:#c0504d">passage:and(&quot;Red&quot;, &quot;Car&quot;)
</span></p><p style="margin-left:36pt"><span style="color:#c0504d">passage:or(&quot;Red&quot;, &quot;Car&quot;)
</span></p><p>In the previous examples, a single non-scope field was used in the field specification. You could also use FAST's composite field which consists of a set of fields:
</p><p style="margin-left:36pt"><span style="color:#c0504d">&lt;composite-field name=&quot;customcompositefield&quot; &gt;
</span></p><p style="margin-left:36pt"><span style="color:#c0504d">    &lt;field-ref name=&quot;passage&quot; level=&quot;1&quot; &gt;
</span></p><p style="margin-left:36pt"><span style="color:#c0504d">    &lt;field-ref name=&quot;title&quot; level=&quot;2&quot; /&gt;
</span></p><p style="margin-left:36pt"><span style="color:#c0504d">&lt;/composite-field&gt;
</span></p><p>Now FQL can be used to easily query a composite field using the field specification such as:
</p><p style="margin-left:36pt"><span style="color:#c0504d">customcompositefield: and(&quot;Red&quot;, &quot;Car&quot;)
</span></p><p><strong>NOT</strong>: this operator used to find results that don't match the operand:
</p><p style="margin-left:36pt"><span style="color:#c0504d">passage:not(&quot;2009&quot;)</span> &lt;- only returns documents that do not match the operand '2009'
</p><p><strong>COUNT</strong>: this operator returns the number of times the operand is found.
</p><p style="margin-left:36pt"><span style="color:#c0504d">passage:count(&quot;Car&quot;)
</span></p><p>You could extend COUNT to something like:
</p><p style="margin-left:36pt"><span style="color:#c0504d">passage:count(&quot;Car&quot;) &gt; 10</span> &lt;- shows documents in which 'car' appears more than 10 times.</p></div></div>
<div><b>Published:</b> 7/1/2010 7:34 AM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Thu, 01 Jul 2010 12:34:21 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=37</guid>
    </item>
    <item>
      <title>Test your queries with FAST</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=38</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass49DECC83DAD94EB5A69B12D03A688773><p>To quickly and easily test FAST queries, you can use the Search Front End UI and its advanced options to create queries against your content without having to debug queries through code. This is a very useful feature, especially if you have worked on SharePoint Search projects where testing queries consisted of building your own application or using a third party tool. <p>You can execute simple text search and apply a search mode (All, Any or Exact Phrase): <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image002_2_73BCD36A.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image002" border=0 alt="clip_image002" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image002_thumb_73BCD36A.jpg" width=244 height=56></a> <p>Advanced options provided an easy way to query your content: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image004_2_73BCD36A.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image004" border=0 alt="clip_image004" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image004_thumb_73BCD36A.jpg" width=244 height=86></a> <p>You can also directly try your FQL queries: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image006_2_21AA2623.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image006" border=0 alt="clip_image006" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image006_thumb_21AA2623.jpg" width=244 height=78></a> <p>Get the results <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image008_2_21AA2623.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image008" border=0 alt="clip_image008" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image008_thumb_21AA2623.jpg" width=244 height=51></a> <p>If you want to investigate all the fields coming back from FAST, you can easily configure that in the advanced options by checking the 'Show All Fields' check box and you will be able to see all the fields and their respective values: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image010_2_21AA2623.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image010" border=0 alt="clip_image010" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image010_thumb_21AA2623.jpg" width=244 height=70></a> <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image012_2_21AA2623.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image012" border=0 alt="clip_image012" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image012_thumb_4F9778DB.jpg" width=150 height=244></a> <p>For even more details on your search results, check the 'Debug Mode' check box  <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image014_2_4F9778DB.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image014" border=0 alt="clip_image014" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image014_thumb_4F9778DB.jpg" width=244 height=74></a> <p>and the ranklog field now shows a formula with which the rank value is being calculated: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image016_2_4F9778DB.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image016" border=0 alt="clip_image016" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image016_thumb_4F9778DB.jpg" width=244 height=37></a> <p>You can also specifically search against fields in the 'Fielded Search': <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image018_2_4F9778DB.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="clip_image018" border=0 alt="clip_image018" src="/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image018_thumb_3AA5F668.jpg" width=244 height=146></a></div></div>
<div><b>Published:</b> 7/1/2010 7:35 AM</div>
<div><b>Attachments:</b> <a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image002_2_73BCD36A.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image002_2_73BCD36A.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image002_thumb_73BCD36A.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image002_thumb_73BCD36A.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image004_2_73BCD36A.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image004_2_73BCD36A.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image004_thumb_73BCD36A.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image004_thumb_73BCD36A.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image006_2_21AA2623.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image006_2_21AA2623.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image006_thumb_21AA2623.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image006_thumb_21AA2623.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image008_2_21AA2623.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image008_2_21AA2623.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image008_thumb_21AA2623.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image008_thumb_21AA2623.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image010_2_21AA2623.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image010_2_21AA2623.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image010_thumb_21AA2623.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image010_thumb_21AA2623.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image012_2_21AA2623.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image012_2_21AA2623.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image012_thumb_4F9778DB.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image012_thumb_4F9778DB.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image014_2_4F9778DB.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image014_2_4F9778DB.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image014_thumb_4F9778DB.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image014_thumb_4F9778DB.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image016_2_4F9778DB.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image016_2_4F9778DB.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image016_thumb_4F9778DB.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image016_thumb_4F9778DB.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image018_2_4F9778DB.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image018_2_4F9778DB.jpg</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image018_thumb_3AA5F668.jpg">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/38/clip_image018_thumb_3AA5F668.jpg</a><br><a href=""></a></div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Thu, 01 Jul 2010 12:35:32 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=38</guid>
    </item>
    <item>
      <title>SharePoint Designer's Poor Performance</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=14</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass687DA7DEB7B54C04A148438F7572002A><p>It seems that SharePoint Designer performs poorly when dealing with anything other than really basic workflows. From what I have noticed, it seems that the time to open the workflow gets exponentially longer with the number of activities present in a workflow. The same can be said with editing those activities, in fact I often spent minutes staring at my screen after updating simple activities waiting for the Workflow to surface back from its coma.
</p><p><strong>Increasing Performance Tip
</strong></p><p>The real problem here is the number of activities inflates the Workflow XOML size (which can also prevent validation if too big) which consequently affects performance. In order to validate your Workflow XOML, a web service call is made to the &quot;ValidateWorkflowMarkupAndCreateSupportObjects&quot; method. In my case, the XOML was too big and the validation never completed thus resulted in a server error:  
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/012009_2030_SharePointD1.png" alt="">
	</p><p>Some re-factoring in the workflow had to be done to ultimately reduce the number of activities as much as possible. Eventually, my Workflow XOML got lighter and validation could be completed properly. I also noticed some minimal performance increase as the Workflow would open quicker and would hang less.
</p><p>Though I am not saying SharePoint Designer is not a good tool to build workflow, this certainly reveals another limitation developers should be aware of as re-factoring will not always be possible.</p></div></div>
<div><b>Published:</b> 1/20/2009 2:31 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Tue, 20 Jan 2009 20:31:37 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=14</guid>
    </item>
    <item>
      <title>ADO.NET Data Services &amp; Querying Using URIs</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=15</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassC8BBCAE4B6374D71B48442D25AF80326><p>I have been playing with ADO.NET Data Services framework recently in its preview state and am excited about this new upcoming technology with what it has to offer! This new framework really facilitates the surfacing of server side data. Its appealing aspect resides in the fact that it is reaching for server side resources using HTTP and the underlying verb of HTTP such as GET, POST or DELETE. The surfacing of the data is done using REST web services which use URIs to identify results on the server and use HTTP verb to describe what we want to do with those results. We can get back the data from the services in the Atom Syndication format (web feeds XML language) or in the Javascript Object Notifaciton (JSON). As far as data sources, Data Services can quickly and efficiently surface pretty much any kind of data such as Entity Framework data, LINQ to SQL data or some arbitrary data.
</p><p>One of the attracting aspect of Data Services is the simplicity in the way they access server data is being surfaced using URIs. Here is some examples of what can be accomplished using those URIs. Let's assume we have created a Data Service &quot;dataservice.svc&quot; that surface our data, in this case a bike catalog.
</p><p><em>http://server/dataservice.svc/Bikes</em> - this URI points to the Entity set Bikes and returns a list of bikes
</p><p><em>http://server/dataservice.svc/Bikes('MB123523')</em> - using the primary key 'ID' now a single entity is targeted, the bike with the ID of 'MB123523' is returned
</p><p><em>http://server/dataservice.svc/Bikes('MB123523')/Price</em> - properties within a bike entity can be retrieved as well, here the price property is returned for the bike with the ID of 'MB123523'
</p><p><em>http://server/dataservice.svc/Bikes('MB123523')/Orders</em> - here, a set of orders entities associated with the bike of ID 'MB123523' entity is returned
</p><p><em>http://server/dataservice.svc/Bikes?$expand=Orders</em> - this URI will return bikes and the orders of the bikes
</p><p><em>http://server/dataservice.svc/Bikes?$expand=Orders,Price</em> - this will return the bikes, the orders and the price of the bikes
</p><p><em>http://server/dataservice.svc/Bikes?$expand=Orders,Orders/Date,Price</em> - this will return the bikes, the orders, the date of the orders of the bikes, the price of the bikes
</p><p><em>http://server/dataservice.svc/Bikes('MB123523')/Orders?$filter=Completed eq true</em> - you can use the $filter operator as well to define a more defined set of entities
</p></div></div>
<div><b>Published:</b> 1/23/2009 11:41 AM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Fri, 23 Jan 2009 17:41:43 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=15</guid>
    </item>
    <item>
      <title>'Deploy' SharePoint Designer Workflows</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=16</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassF2F61779136343FC86E0E1BCAF743FF8><p>There is no easy way to deploy a SharePoint Designer workflow and manually creating a workflow from scratch when wanting to move it from one environement to the other is definitly not a solution either. Though web packages are part of the solution, I will show you additional tricks you will need to know in order to make sure you can 'deploy' sucessfully your workflows.
</p><p><strong>Export the workflow
</strong></p><p>Go to SharePoint Designer, click on 'File' -&gt; 'Export' -&gt; 'Personal Web Package...'
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare1.png" alt="">
	</p><p>Add the workflow to you web package and click on 'OK'
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare2.png" alt="">
	</p><p>You should now have a web package file with the workflow you want to export.
</p><p><strong>Import the workflow
</strong></p><p>
 </p><p>From your new environment you  want to import the workflow to, go to SharePoint Designer, click on 'File' -&gt; 'Import' -&gt; 'Personal Web Package...'
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare3.png" alt=""><strong>
		</strong></p><p>Select the Workflow you wish to import and click 'Import'
</p><p><strong>Additional work required
</strong></p><p>Now that you have imported your workflow, you have to update GUIDs and Tasks. 
</p><p>Open your workflow and reassign the SharePoint list it should be attached to:
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare5.png" alt="">
	</p><p>Notice that all that all the lookup fields are now replaced by the old GUIDs. Select individual lookup and an reassign the correct lookup field. 
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare6.png" alt="">
	</p><p>Now, if your workflow contains any assign or collect actions, delete them all. 
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare7.png" alt="">
	</p><p>Though your workflow is NOT complete, click on 'Finish'. The XOML is going to be updated and all references of assign or collect actions are going to get cleaned up. If you skipped that step your workflow will not work.
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare8.png" alt="">
	</p><p>Go to your workflow folder in SharePoint Designer and make sure you get rid of all the aspx pages (task templates and the workflow's start page).
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare9.png" alt="">
	</p><p>Open your workflow again, and add all missing assign or collect actions previously deleted
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/030909_1918_DeployShare10.png" alt="">
	</p><p>Click on 'Finish' when you are done. 
</p><p>The workflow has now been 'deployed' to your new environment with a minimal amount of work (considering the alternative of doing it all manually).
</p></div></div>
<div><b>Published:</b> 3/9/2009 1:19 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Mon, 09 Mar 2009 19:19:24 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=16</guid>
    </item>
    <item>
      <title>Manage Event Handlers</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=17</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassEA5822A3C8B540FB91AD5A281352967C><p>I worked with event handlers on my last project and I wanted a quick and easy way to add/delete my event handlers. I found a pretty cool application on <a href="http://www.codeplex.com/">CodePlex</a> that let you manage your own events. After enabling the feature, I was able to view all my events, add new ones, edit or delete them, and all this from the UI. Before using this application, I was using SharePoint Manager 2007 and went to each list to see what events would be associated to it.. that application centralizes all the events which I thought was very useful, check it out <a href="http://spscustomadmin.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=3024">here</a>! </p></div></div>
<div><b>Published:</b> 5/7/2009 2:06 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Thu, 07 May 2009 19:06:53 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=17</guid>
    </item>
    <item>
      <title>Deleting Sites </title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=18</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass27F14B82E8D34C16BA0F20BF2D123924><p><span style="font-size:10pt">Talking with a colleague of mine today, I was explaining how sites in SharePoint are lost once deleted. Meaning, a deleted site will not be saved to the recycle bin like a list/item/document would be for example. This is the expected behavior out-of-the-box.
</span></p><p><span style="font-size:10pt">Now, you could use an event handler to override the <em>WebDeleting </em>method<em>
			</em>and either prevent the user to delete the site or make a copy of the site and its content somewhere so that it can be retrieved if it is ever needed.
</span></p><p><span style="font-size:10pt">A solution was already created which does just that called 'MSIT Site Delete Capture 1.0.' See <a href="http://www.codeplex.com/governance/Release/ProjectReleases.aspx?ReleaseId=3830">here</a> for more information.
</span></p><p><span style="font-size:10pt">I also wanted to share a good video on event handler by Ted Pattison that I thought was pretty good. Watch the video <a href="http://channel9.msdn.com/shows/In+the+Office/Creating-and-Using-Event-Handlers-in-Windows-SharePoint-Services-V3/">here</a>.</span></p></div></div>
<div><b>Published:</b> 5/12/2009 4:41 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Tue, 12 May 2009 21:41:49 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=18</guid>
    </item>
    <item>
      <title>SPWeb.AvailableContentTypes - READ ONLY PROPERTY!</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=20</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass05941D59375D4396A111973B0CEFC9CB><p>Maybe you have wondered what is the difference between the SPWeb.AvailableContentTypes and SPWeb.ContentType, I know I did. Reading intellisence, I couldn't really tell which one to use, they both seem close to being identical:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061109_2155_SPWebAvaila1.png" alt="">
	</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061109_2155_SPWebAvaila2.png" alt="">
	</p><p>I decided to work with SPWeb.AvailableContentTypes but ran into problems when trying to update my content as I was continually getting the &quot;The collection cannot be modified&quot; error.
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061109_2155_SPWebAvaila3.png" alt="">
	</p><p>Turns out that the SPWeb.AvailableContentTypes is a read-only property. Now reading the Remarks section on <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.availablecontenttypes.aspx">msdn</a>, you can see that they mention it is a read-only property but I really wished this kind of information would be included in intellisence.</p></div></div>
<div><b>Published:</b> 6/11/2009 4:55 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Thu, 11 Jun 2009 21:55:22 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=20</guid>
    </item>
    <item>
      <title>Retreiving Recurring Events from a SharePoint Calendar list</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=21</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass1ED210085AFB4117B7968A50D31BFD16><p>I thought it would be useful to post an entry on how to retrieve recurring events from a calendar list. If you ever had to display recurring events, you probably noticed no list items are created for those events in the calendar list. 
</p><p>In order to display those items, I had to do a bit of digging... I noticed that the &quot;Current Events&quot; view from the calendar list would display those recurring events giving the illusion that they were actual unique list items.
</p><p>Using SharePoint Solution Generator 2008 (as part of the extension for Visual Studio 2008 that can be downloaded <a href="http://www.microsoft.com/downloads/details.aspx?familyid=7BF65B28-06E2-4E87-9BAD-086E32185E68&amp;displaylang=en">here</a>), I extracted the schema.xml that includes all the views including the &quot;Current Events&quot; to see how those events were being retrieved:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1523_RetreivingR1.png" alt="">
	</p><p>The RecurrenceID field identifies a specific instance of a recurring event and its value represents the starting date and time of a specific instance.
</p><p>In my code, I re-used the query from the view and set as well the SPQuery.ExpandRecurrence property to true:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1523_RetreivingR2.png" alt=""></p></div></div>
<div><b>Published:</b> 6/15/2009 10:23 AM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Mon, 15 Jun 2009 15:23:53 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=21</guid>
    </item>
    <item>
      <title>Working with STSDEV 2008 under source control</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=22</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass669EA1205B554225A76819C8FEADB779><p>I have encountered a few issues when working with STSDEV under source control and if you are not aware of those issues, you might end up wasting a lot time trying to figure out what is going wrong.
</p><p><strong>Updating the targets file
</strong></p><p>When changing the target file, you would think the changes would instantly take effect but they don't. For example, the path of your STSDEV might be different from the path your colleague has so naturally , you would go and update it properly so that is works in your environment:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1711_Workingwith1.png" alt="">
	</p><p>For changes to take effect, you have to make sure you unload the project (after saving your targets file):
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1711_Workingwith2.png" alt="">
	</p><p>and reload it:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1711_Workingwith3.png" alt="">
	</p><p>I have stared at the screen for a while wondering why STSDEV was breaking when everything seemed in order in the targets file. 
</p><p><strong>Read only deployment files
</strong></p><p>Make sure that the deployment files can be modified before you build your project. 
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1711_Workingwith4.png" alt="">
	</p><p>Check the targets file and SolutionConfig.xml out to you:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1711_Workingwith5.png" alt="">
	</p><p>Go to your the folder where your deployment files are located and verify that none of the files are set to &quot;Read only&quot;. 
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061509_1711_Workingwith6.png" alt="">
	</p><p>Then go ahead and build your project and STSDEV will properly update any deployment files. 
</p></div></div>
<div><b>Published:</b> 6/15/2009 12:12 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Mon, 15 Jun 2009 17:12:06 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=22</guid>
    </item>
    <item>
      <title>Hyper-v and Virtual PC 2007: Some Cohabitation Issues</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=23</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassA676C00636354EB8B8160C103D1B46C5><p>I recently started to work with Hyper-v to build a 64 bit environment as Virtual PC 2007 is not supporting it. 
</p><p>I started to go back and forth between Hyper-v and Virtual PC 2007. I immediately noticed that my all my vms in Virtual PC 2007 would not perform well. They would take forever to start, the Active Directory indices would systematically be rebuilt on start, some services could not be started properly, and the overall performance was very poor.
</p><p>The problem is coming from the fact that Hyper-v is binding itself to the hypervisor process not allowing any other applications to use that process. As a result, those other applications, such as Virtual PC 2007, get a filtered access to the CPU instead of a direct access.
</p><p><strong>Steps to follow to avoid issues
</strong></p><p>Set the following three services to be started manually:
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/082009_1511_HypervandVi1.png" alt="">
	</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/082009_1511_HypervandVi2.png" alt="">
	</p><p>Before you use Virtual PC 2007, open a command prompt window and enter the following command:
</p><p style="margin-left:36pt"><span style="color:#c00000"><em>sc config hvboot start= disabled
</em></span></p><p>After entering the command, <strong>reboot</strong> your machine.
</p><p>Before you use Hyper-v, open a command prompt window and enter the following commands:
</p><p style="margin-left:36pt"><span style="color:#c00000"><em>sc config hvboot start= auto
</em></span></p><p style="margin-left:36pt"><span style="color:#c00000"><em>net start hvboot
</em></span></p><p>Now you can start Hyper-v manager and start the service manually:
</p><p style="text-align:center"><img src="/Blogs/dupont_thomas/Lists/Photos/082009_1511_HypervandVi3.png" alt="">
	</p></div></div>
<div><b>Published:</b> 8/20/2009 10:11 AM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Thu, 20 Aug 2009 15:11:39 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=23</guid>
    </item>
    <item>
      <title>LINQ to SharePoint with SharePoint 2010</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=26</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass76C2BB41B9A24A85AA964DD71151E1B5><p>With SharePoint 2010, LINQ to SharePoint is now fully supported. It now offers the ability to work with strongly typed objects as well as the ability to use the LINQ syntax which is easier than using CAML. Another great advantage of using LINQ to SharePoint is that you can join SharePoint lists which can be very powerful. 
</p><p>In order to use LINQ to SharePoint, you will need to have entity classes created. Rather than having to create them manually which would take a long time, Microsoft provided a small utility that creates all those objects for you called SPMetal (<a href="http://msdn.microsoft.com/en-au/library/ee538255(office.14).aspx">click here for more information</a>).  The SPMetal utility works similarly to the SQLMetal utility (extracts SQL metadata from a database and generates entity classes).  SPMetal will generate those entity classes which are used in LINQ to execute SharePoint queries. When those queries are executed, the LINQ statements are in turn translated to CAML.
</p><p><strong>SPMetal command syntax
</strong></p><p><span style="color:#c0504d"><em>SPMetal.exe /web:http://yoursite/ namespace:LINQtoSharePoint /code:SPLinq.cs
</em></span></p><ul><li><strong>web: </strong>The complete, absolute URL of the Web site whose data is modeled by the entity classes.
</li><li><strong>namespace</strong>: The namespace that contains the entity class declarations.
</li><li><strong>code</strong>: The relative or absolute path and file name of the output file.
</li></ul><p><img src="/Blogs/dupont_thomas/Lists/Photos/102709_1625_LINQtoShare1.png" alt="">
	</p><p>For more command line options, <a href="http://msdn.microsoft.com/en-au/library/ee538255(office.14).aspx">see here</a>.
</p><p>After the command was successfully executed with SPMetal, code should have been created for you:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102709_1625_LINQtoShare2.png" alt="">
	</p><p>Add that code to your SharePoint project.
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102709_1625_LINQtoShare3.png" alt="">
	</p><p>Notice that a class <em>'SPLinqDataContext'</em> is created by the SPMetal tool containing all the lists available within the SharePoint site. 
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102709_1625_LINQtoShare4.png" alt="">
	</p><p>All those SharePoint lists can now be queried using the <em>SPLinqDataContext </em>class.
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102709_1625_LINQtoShare5.png" alt="">
	</p><p>Now you can use the LINQ syntax to query SharePoint data:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102709_1625_LINQtoShare6.png" alt=""></p></div></div>
<div><b>Published:</b> 10/27/2009 10:28 AM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Tue, 27 Oct 2009 16:28:31 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=26</guid>
    </item>
    <item>
      <title>Content Organizer in SharePoint 2010</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=30</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass8A7A7A278A0940B9B2CC7F39702D577C><p> <p><b></b></p>A great new feature in SharePoint 2010 is the content organizer. In SharePoint 2007, the only way to manage your documents was to use the Record Center Site template which didn't really provide flexibility. Now in SharePoint 2010, the routing engine and supporting settings are encapsulated in a feature that can be activated in any site. <p>Enable the feature 'Content Organizer' at the site level: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_2_156C682F.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_156C682F.png" width=1237 height=61></a>  <p>Once the feature activated, you will notice two new settings links appearing on the site settings page: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_4_156C682F.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_1_156C682F.png" width=241 height=244></a>  <p><b>Send To Another Site</b> <p>In the Content Organizer Settings page, you will notice an option that let you send an item to another site. By default that option is not selected and therefore only allows the routing to happen within a site. <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_6_156C682F.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_2_156C682F.png" width=1132 height=77></a>  <p>When the 'Sending to Another Site' check box is not selected in the Content Organizer Settings page, your rule setting page in the target location section will show as shown here: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_8_4359BAE7.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_3_4359BAE7.png" width=692 height=176></a>  <p>When you do check that 'Sending to Another Site' check box, you will see a drop down list that will contain all your 'Send To connections: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_10_4359BAE7.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_4_4359BAE7.png" width=704 height=168></a>  <p>You can define and create your 'Send to' connections in Central Administration at : <p>Central Administration &gt; General Application Settings &gt; Configure Send To Connections <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_12_4359BAE7.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_5_4359BAE7.png" width=738 height=335></a>  <p>On the configure send to connections page, enter the url of your site and append the web service 'OfficialFile.asmx' : <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_14_4359BAE7.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_6_4359BAE7.png" width=867 height=157></a>  <p>Just keep in mind that the site your sending the item to must have the Content Organizer feature enabled as well.  <p>Another interesting feature in the Content Organizer Settings page is the Folder Partitioning option.  <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_16_4359BAE7.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_7_4359BAE7.png" width=1162 height=142></a>  <p>With SharePoint 2010 you can automatically configure an item limit of the target location. Once the limit is reached, subfolders are created and used to store incoming items.  <p><b>Content Types Filtering </b> <p>You can now use Content Types and their metadata columns to define your rule: <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_18_4359BAE7.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_8_4359BAE7.png" width=515 height=147></a>  <p><b>Priority</b> <p>You can also set a priority of your rules. When incoming items are going to be processed by the routing engine, rules with the highest priority are going to be processed first. A rule with priority of 5 will be processed before a rule of priority of 7 (which is lower). If all conditions in a rule are met, remaining rules are not processed and the item is automatically routed. <p><a href="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_20_4359BAE7.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_9_4359BAE7.png" width=475 height=123></a></div></div>
<div><b>Published:</b> 1/4/2010 3:53 PM</div>
<div><b>Attachments:</b> <a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image002_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image002_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image002_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image002_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image004_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image004_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image004_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image004_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image006_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image006_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image006_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image006_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image008_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image008_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image008_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image008_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image010_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image010_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image010_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image010_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image012_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image012_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image012_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image012_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image014_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image014_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image014_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image014_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image016_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image016_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image016_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image016_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image018_2_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image018_2_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image018_thumb_0580657A.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image018_thumb_0580657A.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image020_2_336DB832.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image020_2_336DB832.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image020_thumb_336DB832.gif">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/clip_image020_thumb_336DB832.gif</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_10_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_10_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_12_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_12_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_14_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_14_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_16_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_16_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_18_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_18_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_2_156C682F.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_2_156C682F.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_20_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_20_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_4_156C682F.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_4_156C682F.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_6_156C682F.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_6_156C682F.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_8_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_8_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_1_156C682F.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_1_156C682F.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_156C682F.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_156C682F.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_2_156C682F.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_2_156C682F.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_3_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_3_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_4_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_4_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_5_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_5_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_6_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_6_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_7_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_7_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_8_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_8_4359BAE7.png</a><br><a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_9_4359BAE7.png">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/Attachments/30/image_thumb_9_4359BAE7.png</a><br><a href=""></a></div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Mon, 04 Jan 2010 21:53:03 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=30</guid>
    </item>
    <item>
      <title>Document ID Service in SharePoint 2010</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=31</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass61AAF8F77259490AB1D370D07E04E999><p>The Document ID Service feature is a great addition to SharePoint 2010.
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032610_0015_DocumentIDS1.png" alt="">
	</p><p>SharePoint 2007 lacks the ability to link to a document without using its path, which is a problem when a document is moved to a different document library, site collection or farm. A link could ultimately become a broken link as soon as the targeted document path is changed. The new Document ID feature in SharePoint 2010 now fixes this issue as it assigns a unique ID and associates a permanent URL to any new document added.
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032610_0015_DocumentIDS2.png" alt="">
	</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032610_0015_DocumentIDS3.png" alt="">
	</p><p>The Document ID service will find any document using its Document ID and the following two approaches. First approach, it will execute a search query and try find the document. If Search is unable to find the document, let's say that document has been moved but its new location or that a new document has been simply added and that the index hasn't picked it up yet, then the Document ID service will use its second approach. The second approach consists of using its own lookup logic using the List ID  and List Item ID that are in the document's unique ID.
</p><p>There is also a very useful Document ID web part that can be used to quickly retrieve a document: 
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032610_0015_DocumentIDS4.png" alt="">
	</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/032610_0015_DocumentIDS5.png" alt=""></p></div></div>
<div><b>Published:</b> 3/25/2010 6:18 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Fri, 26 Mar 2010 00:18:13 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=31</guid>
    </item>
    <item>
      <title>"OR" logic in fulltextsqlquery</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=9</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassFD83D027BD324DB29D32156E37DFB26A><p>In some instances, the OR logic in fulltextsqlquery works as an AND which could be very confusing when trying to build queries. For example, let's say you have two managed properties that are both mapped to two different crawled properties. Now if you execute a query and search for a term that is available in one item and that this item meets one of the filtering criteria set up in your OR logic but not the other one then you will not get no results back (!). Suddenly your OR looks and behaves more like an AND. So basically, the item needs to have the two crawled properties in order to be filtered by both managed properties in order to get captured as a result. Here is a quick example:
</p><div><table style="border-collapse:collapse" border=0><colgroup><col style="width:157px"><col style="width:96px"><col style="width:90px"></colgroup><tbody valign=top><tr><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Crawled Properties</p></td><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Item #1</p></td><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Item #2</p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>ArticleTitle</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Title1</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Title2</p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>ArticleAuthor</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Bob</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Billy</p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>ContentType</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Doc</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Doc</p></td></tr></tbody></table></div><p>
 </p><p><strong>Query #1:</strong>
		<span style="color:#c00000"><em>WHERE ContentType=&quot;Doc&quot; AND (ArticleTitle=&quot;Title1&quot; OR ArticleAuthor=&quot;Billy&quot;) 
</em></span></p><p><span style="color:black"><strong>Results #1:</strong> Item #1 and Item #2 get returned.
</span></p><p>
 </p><p>Now let's consider the following data:
</p><div><table style="border-collapse:collapse" border=0><colgroup><col style="width:157px"><col style="width:96px"><col style="width:96px"></colgroup><tbody valign=top><tr><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Crawled Properties</p></td><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Item #1</p></td><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Item #2</p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>ArticleTitle</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Title1</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Title2</p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>ArticleAuthor</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Bob</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Billy</p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>ArticlePrice</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>14</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Doesn't exist</p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>ContentType</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Doc</p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p>Doc</p></td></tr></tbody></table></div><p>
 </p><p><strong>Query #2:</strong>
		<span style="color:#c00000"><em>WHERE ContentType=&quot;Doc&quot; AND (ArticleTitle=&quot;Title1&quot; OR ArticlePrice=&quot;30&quot;)
</em></span></p><p><span style="color:black"><strong>Results #2: </strong>No results.<strong>
			</strong></span></p><p>This will return no results though Item #1 should be returned.
</p><p>
 </p><p>One work around is to actually restate all conditions for each criteria in your query to obtain the correct results as show in this query:
</p><p><strong>Query #3:</strong>
		<span style="color:#c00000"><em>WHERE (Content type=&quot;Doc&quot; AND ArticleTitle =&quot; Title1&quot;) OR (Content type=&quot;Doc&quot; AND ArticlePrice =&quot;30&quot;)
</em></span></p><p><span style="color:black"><strong>Results #3: </strong>Item #1 get returned.</span></p></div></div>
<div><b>Published:</b> 12/18/2008 2:51 PM</div>
]]></description>
      <author>Thomas DuPont</author>
      <pubDate>Thu, 18 Dec 2008 20:51:05 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=9</guid>
    </item>
    <item>
      <title>I Dispose So…</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=1</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass5D313DE137374104AD86ACB537B5A45D>
<p>What goes up must come down. The same idea pertains to what is created, generally must be disposed of. The issue of garbage collection has always plagued programmers in just about every programming language. SharePoint has implemented automatic garbage disposal in a few ways. Still, a conscious effort for disposal must be made in many situations. </p>
<p>The SPSite and SPWeb objects use resources that need to be disposed of properly once their purpose no longer exists. If not disposed, those objects could potentially cause memory leaks resulting in instable environments. </p>
<p>Now the question is, when do I explicitly call the dispose method and when does SharePoint do it for me? There are quite a few situations where you will have to explicitly dispose objects and you can find the full set of instances <a href="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx">here</a>, but I will provide you with the most common situations I have come across: </p>
<ol>
<li>
<div>DISPOSE whenever you instantiate SPSite and SPWeb objects with the <em>new</em> operator. You have to make sure those objects are properly disposed by explicitly calling the dispose method. </div>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>SPSite siteCollection = new SPSite(&quot;http://site1/&quot;); </em></span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>[...] </em></span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>siteCollection.Dispose(); </em></span></p></li>
<li>
<div>DISPOSE objects created when you indirectly call a property or a method of another object that reference a SPSite or SPWeb object. The RootWeb property and the OpenWeb method are good examples as both return SPWeb objects. You have to make sure you dispose of those objects as well. </div>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>SPSite siteCollection = new SPSite(&quot;http://site1/&quot;); </em></span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>SPWeb web = siteCollection.RootWeb;      </em></span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>Web.Dispose(); </em></span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>siteCollection.Dispose(); </em></span></p></li>
<li>
<div>DO NOT DISPOSE if you do decide to use the SPContext.Current.Site and SPContext.Current.Web objects. Sometimes, it is not necessary to create objects using the new operator when the context of the current request could be used instead. Keep in mind that you won't have to dispose of those objects yourself as SharePoint will do it automatically for you after the page has been processed. <em></em></div>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>SPSite siteCollection = SPContext.Current.Site; </em></span></p>
<p> </p></li>
<li>
<div>DO NOT DISPOSE site and web objects if they are wrapped within a using statement because the dispose method will automatically be called when they exit the using statement. The using statement. </div>
<p> </p>
<p style="margin-left:36pt"><span style="color:#4f81bd">Using (SPSite siteCollection = new SPSite(<a href="http://site1/">http://site1/</a>)) </span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd">{ </span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd">    […] </span></p>
<p style="margin-left:36pt"><span style="color:#4f81bd"><em>} </em></span></p>
<p style="margin-left:36pt"> </p></li></ol>
<p>Make sure you also visit the <a href="http://msdn.microsoft.com/en-us/library/aa973248.aspx">msdn best practices for disposing objects</a>. </p></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 9/28/2008 12:45 PM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Sun, 28 Sep 2008 17:45:01 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=1</guid>
    </item>
    <item>
      <title>Helpful SharePoint Designer tools and resources</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=10</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass1318AE6175F94A55923222FD0B58C998><strong>FPCleaner</strong></div><strong></strong>
<div class=ExternalClass1318AE6175F94A55923222FD0B58C998><br>If you are working with SharePoint Designer, you will most likely notice some annoyances here and there related to cache. <a href="http://www.95isalive.com/fixes/fpclean.htm">FPCleaner</a> is a pretty useful little tool that I found that helped me clear quickly temporary files and other cache files that are most of the times the root of those inconveniences. Some of the best features are the ability to clear the web cache files as when those .web files are corrupted, they will prevent you from opening/closing/publishing a web site. Deleting those files usually solved the problems for me. Another nice feature is that ability to change a last open web setting. Designer by default is opening the last edited web but if your web has problems, well Designer will still try to open that web but will likely freeze.</div>
<div class=ExternalClass1318AE6175F94A55923222FD0B58C998><br><strong>Custom Workflow Activities</strong></div>
<div class=ExternalClass1318AE6175F94A55923222FD0B58C998><br>Here is a collection of very useful custom activities you can easily use on your projects. My favorite one is the &quot;Start Another Workflow&quot;. This activity let you point to another of your workflow which opens the door to more &quot;complex&quot; SharePoint Designer workflows. This very cool activity really turned out valuable on a recent project of ours. <a href="http://www.codeplex.com/SPDActivities">Check out those activities</a>.</div>
<div class=ExternalClass1318AE6175F94A55923222FD0B58C998><br><strong>Paul Galvin's blog and custom actions</strong></div>
<div class=ExternalClass1318AE6175F94A55923222FD0B58C998><br>A great resource for SharePoint Designer is <a href="http://paulgalvin.spaces.live.com/blog">Paul Galvin's blog</a>. I found <a href="http://sharepointmagazine.net/technical/development/the-dog-ate-my-task-use-sharepoint-designer-to-email-daily-task-reminders">a very good post</a> of his where he explains how to create a &quot;loop&quot; in SharePoint Designer in order to create a daily task reminder email system. He also worked on <a href="http://www.codeplex.com/spdwfextensions">a set of custom actions</a> that you might find useful for your projects especially if you are planning to do some string manipulation. </div>
<div class=ExternalClass1318AE6175F94A55923222FD0B58C998> </div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 1/19/2009 10:23 AM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Mon, 19 Jan 2009 16:26:30 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=10</guid>
    </item>
    <item>
      <title>Little useful web parts</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=19</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass998A22E0603B452F97C48A5465C21DB6><p>One of the requirements on my last project was to have a tag cloud web part to link to various articles and blogs. I found a web part that does just that <a href="http://www.wsssearch.com/tagging.html">here</a>. 
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061109_2134_Newlittleus1.png" alt="">
	</p><p>If you have to customize the html of those tags according to their weight, check out an updated version of the previous web part posted on <a href="http://cks.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=4820">codeplex</a> that let you do that. Find it <a href="http://cks.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=4820">here</a>. 
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061109_2134_Newlittleus2.png" alt="">
	</p><p>Another cool little web part is the SharePoint Quick Surverys. Sometimes, it makes more sense to have a user fill out a survey from a home page rather than making that user go to the survey list. That's what this web part is doing. On top of that, it offers some useful configuration options:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/061109_2134_Newlittleus3.png" alt="">
	</p><p>You can find that web part <a href="http://darrenjohnstone.net/2008/02/17/sharepoint-quick-surveys/">here</a>.
</p></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 6/11/2009 4:35 PM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Thu, 11 Jun 2009 21:35:13 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=19</guid>
    </item>
    <item>
      <title>Turning auditing on and possible problems it implies</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=2</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassB39320D5419B4DABA1FEC320AE95F4FF>
<p style="text-align:justify">When working on a project, my team and I ran into problems with the SharePoint auditing feature. The issue wasn't so much about the feature itself but more about the data it was generating and the consequences it implied. </p>
<p style="text-align:justify">In our case, less than an hundred users accessed and worked on the site but the auditing was set up in such a way that all documents and items events as well as all list, libraries, and sites events were being audited. The company's users did a massive amount of publishing work on a daily basis throughout the site and in several languages. All those processes were saved in the logs which are saved in the AuditData table in the content database. A few months after the site launched and auditing was still working in full mode, we saw the content database become an astonishing size and two third of that was logs. </p>
<p>Getting rid of the log entries is where it gets tricky. SharePoint doesn't provide an interface to delete those logs. Directly removing them from the content database wouldn't be supported by Microsoft. The only way left to remove those entries is to use the SharePoint object model using <span style="color:#548dd4">SPAuditQuery</span> and <span style="color:#548dd4">SPAuditEntryCollection</span> and this removal process can turn out to be a very slow process. When dealing with auditing in SharePoint, be sure you are logging information that you only require to capture. Ignoring some of the consequences could result in complications such as heavy backups, slower response time, and a gigantic content database.</p></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 9/28/2008 12:47 PM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Sun, 28 Sep 2008 17:47:38 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=2</guid>
    </item>
    <item>
      <title>Client Object Model with SharePoint 2010</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=25</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass37A26ADF2D1240D2B37F22B3A7A87675><p>SharePoint 2007 didn't have any client object model; as a result, only the server side api could be used to access SharePoint data when creating a Windows, WPF, Console, Silverlight or ASP.NET applications. 
</p><p>SharePoint 2010 now provides the infrasctucture to easily use SharePoint data from those client applications thanks to the client object model. You can now have your client applications easily access SharePoint properties, Lists and Document Libraries eventhough those client applicaitons might not be running from a SharePoint server or a SharePoint site.
</p><p><strong>Here is a quick example of obtaining SharePoint groups using the client object model
</strong></p><p>First, make sure you add the following two references to your project:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102609_1732_ClientObjec1.png" alt="">
	</p><p>Also make sure you add the following using statement in your code:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102609_1732_ClientObjec2.png" alt="">
	</p><p>Here, I am creating a new client context to my SharePoint site:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102609_1732_ClientObjec3.png" alt="">
	</p><p>I am then querying all the avaibable SharePoint groups in that site and bind the returned results to my control:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102609_1732_ClientObjec4.png" alt="">
	</p><p>The WPF application now shows all the SharePoint groups available in that site:
</p><p><img src="/Blogs/dupont_thomas/Lists/Photos/102609_1732_ClientObjec5.png" alt="">
	</p><p>
 </p><p>  </p></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 10/26/2009 11:33 AM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Mon, 26 Oct 2009 17:33:27 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=25</guid>
    </item>
    <item>
      <title>InfoPath’s Phantom Column</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=3</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassE75E60FD2651491ABF84553C2BB9C2DD>
<p>When working with InfoPath, a weird behavior can occur with SharePoint site columns where the columns may seem to disappear when editing their type. </p>
<p><strong>Recreating the Problem: </strong></p>
<p>Let's say we create a simple form that will capture users' comments with their first and last names as show here: </p>
<p><img alt="" src="/Blogs/dupont_thomas/Lists/Photos/092808_1749_InfoPathsPh1.png"> </p>
<p>The first and last name fields are single line textfields while the comment field is a multiline textfield. </p>
<p>The next step would be to publish the form and create a content type with SharePoint columns mapping to these fields to enable the form to be reused across several libraries. In order to accomplish this, you can either create those columns manually and map them to your fields or let SharePoint create those columns automatically using your fields' names and information. The weird behavior happens when SharePoint automatically creates the columns for you. Once this is complete, the SharePoint InfoPath columns will show up in the site column gallery under the Microsoft InfoPath group as show here: </p>
<p><img alt="" src="/Blogs/dupont_thomas/Lists/Photos/092808_1749_InfoPathsPh2.png">… </p>
<p><img alt="" src="/Blogs/dupont_thomas/Lists/Photos/092808_1749_InfoPathsPh3.png"> </p>
<p>We have originally set the &quot;Comment&quot; field in the InfoPath form to be a multiline so that it can receive more text and the data won't be cut-off by the 255 character limit, however we see it is set to a single line type SharePoint column. Any entries to this comment field will only retain up to 255 characters. To correct this, you will need to change the type of the SharePoint column where the Comment field maps to simply by changing the type from Single line of text to Multiple lines of text. </p>
<p><img alt="" src="/Blogs/dupont_thomas/Lists/Photos/092808_1749_InfoPathsPh4.png"> </p>
<p> </p>
<p>After updating the column's type, you will notice that the column has disapeared from the Site Column Gallery: </p>
<p><img alt="" src="/Blogs/dupont_thomas/Lists/Photos/092808_1749_InfoPathsPh5.png"> </p>
<p>… </p>
<p><img alt="" src="/Blogs/dupont_thomas/Lists/Photos/092808_1749_InfoPathsPh6.png"> </p>
<p>While the column seems to be gone, it is in fact just not referenced. The form will continue to retain information in this field. </p>
<p><strong>Avoiding Data Misplacement: </strong></p>
<p>While your form is receiving information, changes to this field will not be possible. One thing to prevent losing access to the column setting is to make a shortcut of the column from the Site Column Library before modification (from single line to multiline) as shown here: </p>
<p><img alt="" src="/Blogs/dupont_thomas/Lists/Photos/092808_1749_InfoPathsPh7.png"> </p>
<p>Should you be unable to do this small trick because you created a form and modified the now lost column, the only option now is to start over with a new form and republish that form with a new name so that new SharePoint columns can be created. </p></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 9/28/2008 12:49 PM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Sun, 28 Sep 2008 17:49:47 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=3</guid>
    </item>
    <item>
      <title>The Highlighting Keyword Feature Limitation “By Design”</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=4</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassBB64AEC547E1446AB81CAC22AD46A389><p>If you have been working with SharePoint Search, you might have noticed a weird behavior with the highlighting search string feature. We discovered that we were unable to consistently get the highlighted keyword in the search results summary.  Sometimes it would show up, sometimes not...  and this would happen especially with items containing a lot of content.  I opened a ticket with Microsoft to get more information on this behavior and to see if there would be a way to fix this or go around it. Unfortunately there is none according to them.
</p><p>This is clearly a bug because you would expect the search to systematically find and highlight the keyword in the search results but according to Microsoft, this behavior is by design.  The summary size is limited to 1000 words, explaining why the highlighted keyword will not appear if it is located beyond those 1000 words in columns or documents.  The summary size was limited to search only 1000 words so that it would not negatively impact the property store database.</p></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 10/4/2008 12:55 PM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Sat, 04 Oct 2008 17:55:30 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=4</guid>
    </item>
    <item>
      <title>Sharepoint Search Service tool</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=5</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass43CC27F3D2AD47C194E29E268A119D3B><div>If you are working with fulltextsql queries, be sure to get <br>Sharepoint Search Service tool. It is a very helpful tool that will help you create and test your queries. </div>
<div> </div>
<div>Download here:<br><a href="http://www.codeplex.com/SharePointSearchServ">http://www.codeplex.com/SharePointSearchServ</a></div></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 11/7/2008 1:27 PM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Fri, 07 Nov 2008 19:29:35 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=5</guid>
    </item>
    <item>
      <title>Results count and custom paging</title>
      <link>http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=7</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass36E6C9090B0D47EF9E8B060761F94CDE>
<p>Be cautious when using the results table count if you are planning to build a paging control to wrap around your results. </p>
<p>After a query gets executed, a results table gets returned back. The count of the results table should be helpful in theory in order to build your paging feature so that user can go through all the results. Now, one thing to keep in mind with the table count is that it can either be an exact or an estimate count. The more results get returned, the greater the chance you will get an estimate. If we look closely at that estimate you will quickly notice that its value is constantly changing. If the count was only changing by small units it wouldn't be too big of a problem but you will realize soon enough that it is changing so drastically in some cases that it is hard to still perceive this count as a useful value... </p>
<p><strong>The &quot;IsTotalRowsExact&quot; property </strong></p>
<p>One approach to work around this troublesome estimate is to use the boolean property &quot;<strong> </strong>IsTotalRowsExact&quot; that will help you flag those estimates and deal more efficiently with their inconsistencies. Once flagged, it is easier for you to determine if you should still be using that count or maybe a fixed value instead that will prevent your paging to become unstable. So basically, if the IsTotalRowsExact is true, use the results table count without fearing it will affect your paging. On the other hand, if the IsTotalRowsExact is false, accordingly use a value that will be used for your paging. </p>
<p>A decision needs to be taken when designing the paging control. If you want the user to be able to go through all of the paging from beginning to end and that from page results number one then you will have to deal with the fact that you will never get an accurate number of results thus never be able to have an accurate paging in this situation if using that results table count. </p>
<p><strong>Round up/down the count </strong></p>
<p>If you decide to display the counts somewhere in your paging , users might notice that the count is inconsistent for identical queries.. In this situation, you might want to consider rounding up/down the results count to the nearest hundred or thousand. This will provide to the user a more consistent experience. </p></div></div>
<div><b>Category:</b> SharePoint Server</div>
<div><b>Published:</b> 12/15/2008 3:28 PM</div>
<div><b>Categories:</b> SharePoint Server</div>
]]></description>
      <author>Thomas DuPont</author>
      <category>SharePoint Server</category>
      <pubDate>Mon, 15 Dec 2008 21:28:31 GMT</pubDate>
      <guid isPermaLink="true">http://blogs.pointbridge.com/Blogs/dupont_thomas/Lists/Posts/ViewPost.aspx?ID=7</guid>
    </item>
  </channel>
</rss>